package com.malou.client.ventas.movimiento.entrada;

import java.util.List;

import com.extjs.gxt.ui.client.data.BaseFilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.BasePagingLoader;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoader;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.malou.client.MalouConstants;
import com.malou.client.util.MensajeData;
import com.malou.client.util.Utilities;

public class MovimientoEntradas {
	private static MovimientoEntradaServiceAsync mves = GWT
			.create(MovimientoEntradaService.class);
	private static MalouConstants constants = GWT.create(MalouConstants.class);
	public static PagingLoader<PagingLoadResult<ModelData>> loader;
	public static ListStore<BeanModel> store;
	public static MovimientoEntradaDialog movimientoEntradaDialog;

	public static void getPaginate() {

		RpcProxy<PagingLoadResult<MovimientoEntrada>> proxy = new RpcProxy<PagingLoadResult<MovimientoEntrada>>() {

			@Override
			protected void load(Object loadConfig,
					AsyncCallback<PagingLoadResult<MovimientoEntrada>> callback) {
				mves.paginateMovimientoEntrada(
						(FilterPagingLoadConfig) loadConfig, callback);

			}

		};

		loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy,
				new BeanModelReader()) {
			@Override
			protected Object newLoadConfig() {
				BasePagingLoadConfig config = new BaseFilterPagingLoadConfig();
				return config;
			}

		};
		loader.setRemoteSort(true);

		store = new ListStore<BeanModel>(loader);
	}

	public static void save(List<MovimientoEntrada> list) {

		mves.save(list, new AsyncCallback<MensajeData>() {

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(constants.sistemaMarcocruzado(),
						constants.errorConexion(), null);
				store.rejectChanges();
			}

			@Override
			public void onSuccess(MensajeData data) {
				if (data.guardado) {
						 movimientoEntradaDialog.hide();
					loader.load(0, Utilities.itemsPerPage);
				} else {

					String msg = constants.movimientoNoGuardado();
					MessageBox.alert(constants.sistemaMarcocruzado(), msg, null);
				}
				movimientoEntradaDialog.status.hide();
				movimientoEntradaDialog.getButtonBar().enable();
			}

		});
	}
}
